home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / Stars.s < prev    next >
Text File  |  1994-06-18  |  44KB  |  1,951 lines

  1. ;stars
  2.  
  3. rout            ;when this is off, the routine-file will be
  4.             ;assembled, on=testing
  5.             
  6. ;debug            ;when this is on, colors in the background will
  7.             ;show how much time the routine needs.
  8.  
  9. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  10.  
  11. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  12.  
  13. routinemode    equ    2        ;the routinemode !
  14.  
  15.  
  16. ; VideoTracker AGA developer source 25-12-93
  17. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  18. ; wich makes low-resolution overscan a bit ugly.
  19. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  20.  
  21. ; the first part of the source handles the things that are necessary to
  22. ; show the picture/copper and playing of the routine.
  23. ; the part between the "***" lines is the routine-source.
  24. ; at the bottom of the file, there are the necessary incbin-files who
  25. ; are needed to test the routine.
  26. ; these are saved with "save effect" in videotracker. they are raw
  27. ; data files which can be fonts,pictures,landscapes,vectorobjects
  28. ; etcetra.
  29. ; the incbin-files are put in the "variables" table, in the routine
  30. ; player-handler
  31. ; the place where it's done can be found by searching for "!!!"
  32.  
  33.     opt    a+    ;devpac 3 optimize
  34.     opt    o+
  35.  
  36. vew_wid    equ    48
  37. vew_hgt    equ    290
  38. win_hgt    equ    117
  39. win_str    equ    $1a
  40.  
  41.         ifd    ocs
  42. pic_wid        equ    4        ;wide in bytes
  43. pic_hgt        equ    6        ;hoogte
  44. pic_dpt        equ    8        ;number planes
  45. pic_ani        equ    10        ;aantal effes (anim)
  46. pic_vew        equ    12        ;viewmode
  47. pic_cycstr    equ    14        ;cycle start (*4)
  48. pic_cycend    equ    15        ;cycle end (*4)
  49. pic_cycspd    equ    16        ;cycle speed (*4)
  50. pic_cycadd    equ    17        ;cycle add (*4)
  51. pic_palnum    equ    30        ;aantal kleuren
  52. pic_pal        equ    32        ;palette start
  53. pic_palsiz    equ    256*2        ;vaste palette size
  54. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  55.         endc
  56.         
  57.         ifnd    ocs
  58. pic_wid        equ    4        ;wide in bytes
  59. pic_hgt        equ    6        ;hoogte
  60. pic_dpt        equ    8        ;number planes
  61. pic_ani        equ    10        ;aantal effes (anim)
  62. pic_vew        equ    12        ;viewmode
  63. pic_cycstr    equ    14        ;cycle start (*8)
  64. pic_cycend    equ    15        ;cycle end (*8)
  65. pic_cycspd    equ    16        ;cycle speed (*8)
  66. pic_cycadd    equ    17        ;cycle add (*8)
  67. pic_widmod    equ    46        ;animation-width modulo
  68. pic_future    equ    50        ;free future space
  69. pic_palnum    equ    62        ;aantal kleuren
  70. pic_pal        equ    64        ;palette start
  71. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  72. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  73.         endc
  74.         
  75. fon_hgt        equ    4            ;font hoogte
  76. fon_wid        equ    8            ;plane breedte in bytes
  77. fon_dpt        equ    12            ;depth
  78. fon_chrf    equ    16            ;eerste character
  79. fon_chrl    equ    20            ;laatste character
  80. fon_widtab    equ    24            ;font breedte per char
  81. fon_rawpos    equ    256*2+fon_widtab    ;start raw char position
  82. fon_raw        equ    256*4+fon_rawpos    ;start raw planes
  83.  
  84. lnd_sizx    equ    $4        ;size x
  85. lnd_sizy    equ    $8        ;size y
  86. lnd_palnum    equ    $10        ;aantal kleuren -1
  87. lnd_pal        equ    $12        ;palette
  88. lnd_wrl        equ    256*2+lnd_pal    ;worlddata
  89. var_len        equ    $300        ;lengte vartabel
  90.  
  91. var__GfxBase    equ    $000        ;graphics lib
  92. var_pic1    equ    $004        ;current picture
  93. var_anispd1    equ    $008        ;animspeed
  94. var_anitel1    equ    $00c        ;animcount
  95. var_cprbck    equ    $010        ;copperback
  96. var_bck        equ    $014        ;background
  97. var_pic2    equ    $018        ;current picture
  98. var_ntsc    equ    $01c        ;ntsc/pal frequence
  99. var_lnd        equ    $020        ;landscape
  100. var_anilop1    equ    $024
  101. var_rottrg    equ    $028        ;effect trigger
  102. var_txt1    equ    $040        ;text
  103. var_txt16    equ    15*4+var_txt1
  104. var_vec1    equ    $080        ;vectors
  105. var_vec16    equ    15*4+var_vec1
  106. var_fon1    equ    $0c0        ;fonts
  107. var_fon16    equ    15*4+var_fon1
  108. var_cols1    equ    $100        ;colorsets
  109. var_cols16    equ    15*4+var_cols1
  110. var_obj1    equ    $180        ;objects
  111. var_obj16    equ    15*4+var_obj1
  112.  
  113.     ifd    rout
  114.     ;videotracker routine-test
  115.  
  116.     incdir    "w:include/"
  117.     include    "exec/types.i"
  118.     include    "graphics/gfxbase.i"
  119.     include    "lvo/graphics_lib.i"
  120.     incdir    'videotracker:effect/'
  121.  
  122.     SECTION    1,CODE_C
  123. tus
  124.     lea    var,a0
  125.  
  126. ;    move.l    #rotincfon,var_fon1(a0)        ;incbinfile !!!
  127. ;    move.l    #rotincfon,4+var_fon1(a0)    ;incbinfile !!!
  128. ;    move.l    #rotinctxt,var_txt1(a0)        ;incbinfile !!!
  129.  
  130. ;    move.l    #rotincobj,var_obj1(a0)    ;incbinfile !!!
  131. ;    move.l    #rotincbck,var_bck(a0)    ;incbinfile !!!
  132. ;    move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  133. ;    move.l    #rotsrc,curpic1        ;picture !!!
  134. ;    move.l    #rotsrc,curpal1        ;palette !!!
  135. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  136.  
  137.     bsr    paltabres
  138.  
  139.     move.l    ($4).w,a6
  140.     sub.l    a1,a1
  141.     jsr    -$126(a6)        ;findtask
  142.     move.l    d0,curtsk
  143.     move.l    d0,a0
  144.     move.l    $b8(a0),tskpri
  145.  
  146.     lea    dosnam,a1        ;doslib openen
  147.     moveq.l    #0,d0
  148.     move.l    (4).w,a6
  149.     jsr    -408(a6)        ;openlib
  150.     move.l    d0,doslib
  151.  
  152.     bsr.s    label5            ;videotracker opstarten
  153.     
  154.     move.l    curtsk,a0
  155.     move.l    tskpri,$b8(a0)
  156.     move.l    ($4).w,a6
  157.     jsr    -$84(a6)        ;forbid
  158.  
  159.     move.l    doslib,a1
  160.     move.l    (4).w,a6
  161.     jsr    -414(a6)        ;closelib
  162.  
  163.     moveq.l    #0,d0
  164.     rts
  165.     
  166. label5
  167.     move.l    (4).w,a6        ;workbench gedoe
  168.  
  169.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  170.  
  171.     ifd    ntsctest
  172.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  173.     endc
  174.  
  175.     cmp.b    #50,ntscmode        ;ntsc ?
  176.     beq.s    str.ntsc
  177.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  178. str.ntsc
  179.  
  180.     lea    cprjmp,a2        ;copjmp zetten !
  181.     move.l    #cprbck-8,d0
  182.     move.w    d0,6(a2)
  183.     swap    d0
  184.     move.w    d0,2(a2)
  185.  
  186.     lea    cprbck-8,a2        ;copstr zetten !
  187.     move.l    #cpr,d0
  188.     move.w    d0,6(a2)
  189.     swap    d0
  190.     move.w    d0,2(a2)
  191.  
  192.     bsr    cprsprrem        ;sprites legen
  193.  
  194.     lea    gfxnam,a1        ;graphics lib openen
  195.     move.l    (4).w,a6
  196.     jsr    -408(a6)        ;openlib
  197.     move.l    d0,a6
  198.     move.l    d0,gfxlib
  199.     move.l    38(a6),oldcprlist
  200.  
  201.     bset    #1,$bfe001
  202.     bsr    copbuf            ;copper vullen
  203.  
  204.     bsr    sysoff
  205.  
  206. gadrun
  207.     btst    #6,($bfe001).l
  208.     bne    gadrun
  209.  
  210. scrend
  211. scrend.play
  212.     bsr    syson
  213.  
  214.     move.l    gfxlib,a1
  215.     move.l    (4).w,a6
  216.     jsr    -414(a6)        ;closelib
  217.  
  218. scrend.qb
  219.     moveq.l    #0,d0    
  220.     rts
  221.     
  222.     ;vertical blank interrupt, no blits.
  223.     ;handles counters,interlace,sprite
  224.     ;level 3
  225.  
  226. intvb
  227.     bra.s    intvb.cnt
  228.     dc.l    'VIDU'
  229.     dc.l    'LOOP'
  230. intvb.cnt
  231.     movem.l    d0-d7/a0-a6,-(sp)
  232.     lea    ($dff000).l,a6
  233.  
  234.     move.w    $01e(a6),d0
  235.     btst    #5,d0            ;vblank ?
  236.     bne.s    intvb.vb
  237.  
  238.     bra.s    intcop.end
  239.  
  240. intvb.vb
  241.     bsr    grap
  242.     bsr    palctr            ;palette zetten
  243.     bsr.s    copbuf            ;copper vullen
  244.     
  245. intvb.end
  246.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  247.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  248.     rte
  249.  
  250. intcop.end
  251.     movem.l    (sp)+,d0-d7/a0-a6
  252.     move.l    intvbold,-(sp)
  253.     rts
  254.  
  255.     ;transmission buffer empty routine, BLIT !
  256.     ;handles routines,animations
  257.     
  258. inttbe                    ;tbe interrupt
  259.     movem.l    d0-d7/a0-a6,-(sp)
  260.     lea    ($dff000).l,a6
  261.  
  262.     move.w    $01e(a6),d0
  263.     btst    #0,d0            ;no tbe ?
  264.     beq.s    intdskblk
  265.  
  266.  
  267.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  268.     beq.s    inttbe.cop
  269.     btst    #2,($dff016).l
  270.     beq.s    inttbe.cop
  271.  
  272.     ifd    debug
  273.     move.w    #$700,$dff180
  274.     endc
  275.     
  276.     bsr    rotply            ;routineplayer BLIT !
  277.     bsr.s    copbuf            ;copper vullen
  278.  
  279.     ifd    debug
  280.     move.w    #$070,$dff180
  281.     endc
  282.     
  283. inttbe.cop
  284.  
  285. inttbe.end
  286.     move.w    #$0001,$09c(a6)
  287.     movem.l    (sp)+,d0-d7/a0-a6
  288.     rte
  289.  
  290. intdskblk
  291.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  292.     movem.l    (sp)+,d0-d7/a0-a6
  293.     move.l    inttbeold,-(sp)
  294.     rts
  295.  
  296.  
  297.     ;moves the copperbuffer to the copperlist
  298.     ;sort of double buffering
  299.     
  300. copbuf
  301.     movem.l    d0-d7/a0-a6,-(sp)
  302.  
  303.     lea    ($dff000).l,a6
  304.  
  305. copbuf.novb                ;copperchange overslaan
  306.     moveq.l    #0,d0
  307.     move.b    $005(a6),d0
  308.     lsl.w    #8,d0
  309.     moveq.l    #0,d1
  310.     move.b    $006(a6),d1
  311.     add.w    d1,d0
  312.  
  313.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  314.     blt    copbuf.novb
  315.  
  316.     cmp.b    #50,ntscmode
  317.     beq.s    copbuf.pal
  318.     cmp.w    #$133-72-8,d0        ;ntsc grens
  319.     bge    copbuf.novb
  320.     bra.s    copbuf.cont
  321. copbuf.pal
  322.     cmp.w    #$133-8,d0        ;pal grens
  323.     bge    copbuf.novb
  324. copbuf.cont
  325.  
  326.     lea    gra.s,a0        ;buffer copieren
  327.     lea    cprbuf,a1
  328. copbuf_aga                ;AGA stuff :)
  329.     move.l    #(gra.ql)/4-1,d0
  330. copbuf.a
  331.     move.w    2(a0),2(a1)
  332.     add.l    #4,a0
  333.     add.l    #4,a1
  334.     dbra    d0,copbuf.a
  335.  
  336. copbuf.end
  337.     movem.l    (sp)+,d0-d7/a0-a6
  338.     rts
  339.  
  340.     ;goes back to the workbench
  341.     
  342. syson
  343.     movem.l    d0-d7/a0-a6,-(sp)
  344.  
  345.     move.w    #$0001,$dff09a        ;tbeint uit
  346.     move.l    intvbold,($6c).w
  347.     move.l    inttbeold,($64).w
  348.  
  349.     move.l    4,a6
  350.     jsr    -138(a6)        ;permit
  351.  
  352.     move.l    gfxlib,a6
  353.     jsr    -462(a6)        ;disownblitter
  354.  
  355.     move.l    wbview,a1
  356.     move.l    gfxlib,a6
  357.     jsr    _LVOLoadView(a6)     ; Fix view
  358.     jsr    _LVOWaitTOF(a6)
  359.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  360.  
  361. syson.ras
  362.     cmp.b    #$c0,$dff006        ;prevent copperjump
  363.     bne    syson.ras
  364.  
  365.     move.l    gfxlib,a6
  366.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  367.  
  368.     movem.l    (sp)+,d0-d7/a0-a6
  369.     rts
  370.     
  371.     ;goes back to the gadgetscreen
  372.     
  373. sysoff
  374.     movem.l    d0-d7/a0-a6,-(sp)
  375.      
  376.     move.l    gfxlib,a6
  377.     move.l    gb_ActiView(a6),wbview    ;current view
  378.     sub.l    a1,a1            ; clear a1
  379.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  380.     jsr    _LVOWaitTOF(a6)     ; Wait once
  381.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  382.  
  383.     move.l    gfxlib,a6
  384.     jsr    -456(a6)        ;ownblitter
  385.  
  386.     move.l    4,a6
  387.     jsr    -132(a6)        ;forbid
  388.         
  389.     move.l    ($6c).w,intvbold
  390.     move.l    #intvb,($6c).w
  391.     move.l    ($64).w,inttbeold
  392.     move.l    #inttbe,($64).w
  393.     move.w    #$8001,$dff09a        ;tbeint aan
  394.     bsr    gracpr            ;reset copper
  395.     bsr    copbuf            ;copy copper
  396.     move.l    #cpr,$dff080
  397.  
  398.     movem.l    (sp)+,d0-d7/a0-a6
  399.     rts
  400.     
  401. cprsprrem
  402.     movem.l    d0-d7/a0-a6,-(sp)
  403.     lea    cprspr,a0
  404.     move.l    #sprdat,d0
  405.     move.w    #7,d1
  406. cprsprrem.a
  407.     move.w    d0,3*2(a0)
  408.     swap    d0
  409.     move.w    d0,1*2(a0)
  410.     swap    d0
  411.     add.l    #8,a0
  412.     dbra    d1,cprsprrem.a
  413.     movem.l    (sp)+,d0-d7/a0-a6
  414.     rts
  415.  
  416. varset                    ;variablen neerzetten
  417.     movem.l    d0-d7/a0-a6,-(sp)
  418.     move.l    #var,a0
  419.  
  420.     move.l    #cprbck,var_cprbck(a0)
  421.     move.l    gfxlib,var__GfxBase(a0)
  422.     move.b    ntscmode,var_ntsc(a0)
  423.  
  424.     move.l    curpic1,var_pic1(a0)    ;variabel
  425.     move.l    curpic2,var_pic2(a0)    ;variabel
  426.     move.w    anispd1,var_anispd1(a0)
  427.     move.w    anitel1,var_anitel1(a0)
  428.     move.b    anilop1,var_anilop1(a0)
  429.     move.l    #rottrg,var_rottrg(a0)
  430.     movem.l    (sp)+,d0-d7/a0-a6
  431.     rts
  432.     
  433.     ;this routine handles all videotracker-routines
  434.  
  435. rotply    
  436.     movem.l    d0-d7/a0-a6,-(sp)
  437.  
  438.     moveq.l    #0,d0
  439.  
  440.     lea    currot1,a2        ;routine 1
  441.     move.w    rotinf1,d0        ;routine info
  442.     bsr.s    rotplyr
  443.  
  444. rotply.end
  445.     movem.l    (sp)+,d0-d7/a0-a6
  446.     rts
  447.  
  448.     ;this routine handles 1 routine, BLIT !
  449.     
  450. rotplyr
  451.     movem.l    d0-d7/a1-a6,-(sp)
  452.  
  453.     move.l    #rot,(a2)        ;routinestart address
  454.  
  455. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  456.     clr.l    curpic2            ;background picture
  457.     move.w    #1,anispd1        ;animationspeed
  458.     clr.w    anitel1            ;animation position
  459.  
  460.     lea    var,a0            ;communication-table
  461. ;    move.l    #rotinc,var_lnd(a0)    ;incbinfile !!!
  462. ;    move.l    #rotinc,var_cols1(a0)    ;incbinfile !!!!!!!!!
  463.  
  464.     move.b    #0,anilop1        ;animloop off/on !!!
  465.     move.w    #32,anispd1        ;animdelay !!!
  466.     move.l    #routinemode,d0        ;routinemode !!!
  467.  
  468.     sub.l    a0,a0            ;picture info legen
  469.  
  470.     tst.l    (a2)            ;is er een routine ?
  471.     beq    rotplyr.end        ;interlace handling
  472.  
  473.     move.l    intdel,d2        ;delay
  474.     move.l    inttel,d1        ;teller
  475.     cmp.w    d2,d1
  476.     blt    rotplyr.end
  477.     clr.l    inttel
  478.                 
  479.     bsr    varset            ;variabelen updaten
  480.  
  481.     move.l    (a2),a1            ;routine halen
  482.     move.l    #var,a0            ;variablen tabel
  483.  
  484.     movem.l    d3-d7/a1-a6,-(sp)
  485.     moveq.l    #0,d1            ;vars wissen
  486.     moveq.l    #0,d2
  487.     moveq.l    #0,d3
  488.     moveq.l    #0,d4
  489.     moveq.l    #0,d5
  490.     moveq.l    #0,d6
  491.     moveq.l    #0,d7
  492.     sub.l    a2,a2
  493.     sub.l    a3,a3
  494.     sub.l    a4,a4
  495.     sub.l    a5,a5
  496.  
  497.     jsr    4(a1)            ;routine afwerken
  498.     movem.l    (sp)+,d3-d7/a1-a6
  499.  
  500.     ;Routine:
  501.     ;
  502.     ;Input:
  503.     ;a0=variabelentabel
  504.     ;d0=routinemode
  505.     ;
  506.     ;Output:
  507.     ;a0=picture
  508.     ;d1=copperlist
  509.     ;d2=interruptdelay        (NOT used till now)
  510.     
  511.     move.w    #$0020,$dff09a        ;vb off !
  512.  
  513.     move.l    d2,intdel        ;delay
  514.  
  515.     lea    cprjmp,a3
  516.     move.l    #cprbck-8,d0
  517.  
  518.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  519.     bne.s    rotplyr.nocop
  520.     tst.l    d1            ;copperlist ?
  521.     beq.s    rotplyr.nocop
  522.     move.l    d1,d0
  523. rotplyr.nocop
  524.     move.w    d0,6(a3)
  525.     swap    d0
  526.     move.w    d0,2(a3)
  527.  
  528.     cmp.l    #0,a0            ;picture ?
  529.     beq.s    rotplyr.endvb
  530.  
  531.     move.l    a0,curpic1        ;current picture (cycle)
  532.     move.l    a0,curpal1        ;current palette
  533.  
  534.     tst.b    rotdpl            ;plane is geleverd
  535.     beq.s    rotplyr.set
  536.     clr.b    rotdpl
  537.     clr.l    cycdel1            ;cycle info wissen
  538.     clr.l    4+cycdel1
  539.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  540. rotplyr.set
  541.     clr.b    dplctr
  542.     bsr.s    grap
  543.     bsr    grac            ;colorset
  544. rotplyr.endvb
  545.     move.w    #$8020,$dff09a
  546. rotplyr.end
  547.     movem.l    (sp)+,d0-d7/a1-a6
  548.     rts
  549.  
  550.     ;removes possible routine-coppers
  551.     
  552. gracpr
  553.     movem.l    d0-d7/a0-a6,-(sp)
  554.     lea    cprjmp,a3
  555.     move.l    #cprbck-8,d0        ;copperlist resetten
  556.     move.w    d0,6(a3)
  557.     swap    d0
  558.     move.w    d0,2(a3)
  559.     movem.l    (sp)+,d0-d7/a0-a6
  560.     rts
  561.  
  562. grap                    ;d7=anim
  563.     movem.l    d0-d7/a0-a6,-(sp)
  564.  
  565.     clr.l    d7
  566.  
  567.     tst.l    curpic1            ;current picture ?
  568.     beq    grap.end
  569.  
  570.     move.l    curpic1,a2        ;normal pic halen
  571.  
  572.     lea    gracprscr,a1        ;window neerzetten
  573.     move.l    hogscr,d1
  574.  
  575.     move.w    pic_hgt(a2),d3        ;pic hoogte
  576.     move.w    pic_vew(a2),d5
  577.     btst    #2,d5            ;interlace ?
  578.     beq.s    grap.nohi4
  579.     lsr.w    #1,d3            ;/2
  580. grap.nohi4
  581.     cmp.w    d3,d1
  582.     bge.s    grap.hog
  583.     move.w    d1,d3
  584. grap.hog
  585.     sub.w    d3,d1
  586.     lsr.w    #1,d1
  587.     add.w    #win_str,d1
  588.     move.w    d1,d2
  589.     add.w    d3,d2
  590.  
  591.     move.b    d1,2(a1)        ;y start
  592.     move.b    d2,6(a1)        ;y end
  593.  
  594.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  595.     lsl.l    #3,d4
  596.  
  597.     move.l    #vew_wid*8,d0
  598.     move.l    #0,d1
  599.     move.l    #$61,d6
  600.  
  601.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  602.     ble.s    grap.noov1
  603.     move.l    #$41,d6
  604. grap.noov1
  605.  
  606.     move.w    pic_vew(a2),d5
  607.     btst    #15,d5            ;hires ?
  608.     beq.s    grap.nohi2
  609.  
  610.     move.l    #(vew_wid)*8*2,d0
  611.     move.l    #1,d1
  612.     move.l    #$61,d6
  613.  
  614.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  615.     ble.s    grap.nohi2
  616.     move.l    #(vew_wid)*8*2,d0
  617.     move.l    #$51,d6
  618.  
  619.     bra.s    grap.noshi2
  620. grap.nohi2    
  621.     btst    #6,d5            ;super hires ?
  622.     beq.s    grap.noshi2
  623.  
  624.     move.l    #(vew_wid)*8*4,d0
  625.     move.l    #2,d1
  626.     move.l    #$61,d6
  627.  
  628.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  629.     ble.s    grap.noshi2
  630.     move.l    #(vew_wid)*8*4,d0
  631.     move.l    #$51,d6
  632.  
  633. grap.noshi2    
  634.  
  635.     clr.w    d5
  636.     cmp.w    d0,d4            ;breeder dan scherm ?
  637.     ble.s    grap.c
  638.     move.w    d4,d5
  639.     move.w    d0,d4
  640.     sub.w    d0,d5            ;modulo
  641.     lsr.w    #3,d5            ;/8
  642. grap.c
  643.     lsr.w    d1,d0
  644.     lsr.w    d1,d4
  645.  
  646.     move.w    d0,d2
  647.     sub.w    d4,d2
  648.     lsr.w    #1,d2            ;/2
  649.  
  650.     add.w    d6,d2
  651.     move.b    d2,3(a1)        ;x start
  652.     move.w    d2,d3            ;d3 bewaren !
  653.  
  654.     add.w    d4,d2            ;d4 bewaren !
  655.     move.b    d2,7(a1)        ;x end
  656.     
  657.     move.w    pic_vew(a2),d6
  658.     btst    #15,d6            ;hires ?
  659.     beq.s    grap.nohi5    
  660.     add.l    d4,d4            ;*2
  661.     bra.s    grap.noshi5
  662. grap.nohi5
  663.     btst    #6,d6            ;super hires ?
  664.     beq.s    grap.noshi5    
  665.     add.l    d4,d4            ;*4
  666.     add.l    d4,d4
  667. grap.noshi5
  668.  
  669.     move.l    d7,-(sp)
  670.     move.w    pic_vew(a2),d6
  671.     move.l    #17,d0
  672.     move.l    #4,d1            ;ecs 1
  673.     move.l    #3,d7
  674.  
  675.     btst    #15,d6            ;hires ?
  676.     beq.s    grap.nohi3    
  677.     move.l    #17,d0            ;ecs 9
  678.     move.l    #4,d1            ;ecs 2
  679.     move.l    #2,d7
  680.     bra.s    grap.noshi3
  681. grap.nohi3
  682.     btst    #6,d6            ;super hires ?
  683.     beq.s    grap.noshi3    
  684.     move.l    #17,d0            ;ecs 9
  685.     move.l    #4,d1            ;ecs 2
  686.     move.l    #1,d7
  687. grap.noshi3
  688.     sub.w    d0,d3
  689.     lsr.w    #1,d3
  690.     move.w    d3,10(a1)        ;ddfstrt
  691.     
  692.     move.w    d4,d2            ;pic breedte in pixels
  693.     lsr.w    #4,d2            ;/16
  694.     sub.w    d1,d2            ;-1
  695.  
  696.     lsl.w    d7,d2            ;*8
  697.     add.w    d2,d3
  698.     move.w    d3,14(a1)        ;ddfstop
  699.     move.l    (sp)+,d7
  700.     
  701.     lea    pic_raw(a2),a0
  702.  
  703.     moveq.l    #0,d2
  704.     move.w    pic_dpt(a2),d2
  705.     sub.l    #1,d2
  706.     muls    pic_wid(a2),d2
  707.     add.w    d2,d5
  708.  
  709.     move.w    pic_vew(a2),d2        ;viewmode add
  710.     btst    #2,d2
  711.     beq.s    grap.nolace4
  712.  
  713.     moveq.l    #0,d2
  714.     move.w    pic_dpt(a2),d2
  715.     muls    pic_wid(a2),d2
  716.     add.w    d2,d5            ;interlace gedoe
  717. grap.nolace4
  718.  
  719.     lea    gracprbpl,a4        ;iffpln neerzetten
  720.     lea    gracprpln,a0        ;iffpln neerzetten
  721.     moveq.l    #0,d2
  722.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  723.     move.l    #8,d6            ;copper step !
  724.  
  725.     tst.l    curpic2            ;2de picture ?
  726.     bne.s    grap.pic2
  727. grap.nopic2
  728.     move.w    d5,34(a1)        ;modulo oneven zetten
  729.     bra    grap.nodpl
  730. grap.pic2
  731.     move.l    curpic2,a3        ;oneven plane
  732.     move.l    curpic2+4,a6        ;oneven plane
  733.     move.l    currot2,a5        ;oneven plane
  734.     clr.l    curpic2            ;mischien niet goed
  735.     clr.l    curpic2+4        ;mischien niet goed
  736.     clr.l    curpal2            ;mischien niet goed
  737.     clr.l    currot2            ;mischien niet goed
  738.  
  739.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  740.     beq.s    grap.nopic2
  741.     
  742.     cmp.l    #0,currot1        ;routine ?    
  743.     beq.s    grap.norot
  744.     cmp.l    currot1,a5        ;routine hetzelfde ?
  745.     beq.s    grap.nopic2
  746. grap.norot
  747.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  748.     bgt    grap.nopic2
  749.  
  750.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  751.     cmp.b    d2,d3            ;gelijke plnummers ?
  752.     bne.s    grap.nopic2
  753.     move.w    pic_vew(a2),d1
  754.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  755.     bne.s    grap.nopic2
  756.  
  757.     move.w    pic_vew(a2),d1        ;groter dan view test
  758.     btst    #6,d1            ;super hires ?
  759.     beq.s    grap.nohi2a
  760.     move.l    #vew_wid*4,d1
  761.     bra.s    grap.nohi2b
  762. grap.nohi2a
  763.     btst    #15,d1            ;hires ?
  764.     beq.s    grap.noshi2a
  765.     move.l    #vew_wid*2,d1
  766.     bra.s    grap.nohi2b
  767. grap.noshi2a
  768.     move.l    #vew_wid,d1
  769. grap.nohi2b
  770.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  771.     bgt.s    grap.small
  772.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  773.     bgt.s    grap.small
  774.  
  775.     move.w    pic_vew(a2),d1
  776.     btst    #2,d1
  777.     beq.s    grap.nolace8a
  778.     move.l    hogscr,d1
  779.     add.l    d1,d1
  780.     bra.s    grap.nolace8b
  781. grap.nolace8a
  782.     move.l    hogscr,d1
  783. grap.nolace8b
  784.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  785.     bgt.s    grap.small
  786.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  787.     bgt.s    grap.small
  788.     bra.s    grap.big
  789.  
  790. grap.small
  791.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  792.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  793.     bne    grap.nopic2
  794.     move.w    pic_wid(a2),d1
  795.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  796.     bne    grap.nopic2
  797.  
  798. grap.big
  799.     move.l    a3,curpic2        ;toch wel goed !
  800.     move.l    a6,curpic2+4
  801.     move.l    a3,curpal2
  802.     move.l    a5,currot2
  803.  
  804.     tst.b    dplctr            ;dual playfield al gezet ?
  805.     beq    grap.nocop
  806.  
  807.     move.w    30(a1),34(a1)        ;modulo copieren
  808.  
  809.     move.w    2(a4),d1        ;bplcon0
  810.     btst    #10,d1            ;al dual playfield ?
  811.     beq.s    grap.ta
  812.  
  813.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  814.     move.w    6(a0),14(a0)
  815.  
  816.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  817.     move.w    22(a0),30(a0)
  818.  
  819.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  820.     move.w    38(a0),46(a0)
  821.  
  822.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  823.     move.w    54(a0),62(a0)
  824.  
  825.     bra.s    grap.tb
  826. grap.ta
  827.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  828.     move.w    28(a0),62(a0)
  829.  
  830.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  831.     move.w    22(a0),46(a0)
  832.  
  833.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  834.     move.w    14(a0),30(a0)
  835.  
  836.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  837.     move.w    6(a0),14(a0)
  838.  
  839. grap.tb
  840.     move.l    #palette,a3        ;palette copieren
  841.  
  842.     move.w    #16-1,d1
  843. grap.pal
  844.     move.l    (a3)+,60(a3)
  845.     dbra    d1,grap.pal
  846.  
  847. grap.nocop
  848.     add.w    d3,d2            ;aantal bitplanes
  849.     cmp.w    #8,d2            ;8 bitplanes ?
  850.     blt    grap.no8planes2
  851.     move.w    #%10000,d2        ;only bit 4
  852.     bra    grap.8planes2
  853. grap.no8planes2
  854.     lsl.w    #8,d2
  855.     lsl.w    #4,d2
  856. grap.8planes2
  857.     or.w    #$400,d2        ;dual playfield aan
  858.     move.w    d2,2(a4)        ;bplcon0
  859.  
  860.     movem.l    d0-d7/a0-a6,-(sp)
  861.  
  862.     move.l    curpic,a2        ;animpic ?
  863.     move.l    curfrm,d7
  864.     cmp.l    #0,a2
  865.     bne.s    grap.noanipic
  866.  
  867.     move.l    curpic2,a2        ;normal pic ?
  868.     move.l    curfrm2,d7
  869.     cmp.l    #0,a2
  870.     beq.s    grap.nodplpic
  871.  
  872. grap.noanipic
  873.     add.l    d6,a0
  874.     add.w    d6,d6
  875.     bsr.s    grappln            ;a2,d6,d7,d0
  876. grap.nodplpic
  877.     movem.l    (sp)+,d0-d7/a0-a6
  878.     add.w    d6,d6
  879.     bra.s    grap.nodpla
  880.  
  881.  
  882. grap.nodpl                ;geen dual playfield
  883.     cmp.w    #8,d2            ;8 bitplanes ?
  884.     blt    grap.no8planes
  885.     move.w    #%10000,d2        ;only bit 4
  886.     bra    grap.8planes
  887. grap.no8planes
  888.     lsl.w    #8,d2
  889.     lsl.w    #4,d2
  890. grap.8planes
  891.     move.w    d2,2(a4)        ;bplcon0
  892.  
  893. grap.nodpla
  894.     move.w    d5,30(a1)        ;modulo even
  895.  
  896.     moveq.l    #0,d3
  897.     add.w    pic_vew(a2),d3        ;viewmode add
  898.     moveq.l    #0,d2
  899.     move.w    2(a4),d2
  900.     or.l    d3,d2
  901.  
  902.     ifd    gui
  903.     tst.b    genlck
  904.     bne    grap.genset
  905.     endc
  906.  
  907.     or.l    #$100,d2        ;genlock off ($302)
  908.  
  909.     ifd    gui
  910.     bra    grap.gencont
  911. grap.genset
  912.     or.l    #$102,d2        ;genlock on ($302)
  913. grap.gencont
  914.     endc
  915.     
  916.     move.w    d2,2(a4)
  917.     
  918.     bsr.s    grappln            ;a2,d6,d7,d0
  919.  
  920. grap.end
  921.     
  922.     movem.l    (sp)+,d0-d7/a0-a6
  923.     rts
  924.         
  925.  
  926.     ;sets on of the 2 possible pictures to the copper
  927.     ;handles interlace
  928.  
  929.     ;d7=framenummer
  930.     ;d6=copperliststap
  931.     ;d0=raw planes positie
  932.     ;a2=current picture
  933. grappln                    ;planes invullen 
  934.     movem.l    d0-d7/a0-a6,-(sp)
  935.  
  936.     lea    pic_raw(a2),a1
  937.     move.l    a1,d0            ;raw planes
  938.     
  939.     moveq.l    #0,d2            ;x*y
  940.     move.w    pic_wid(a2),d2
  941.     lsr.l    #1,d2            ;/2
  942.     moveq.l    #0,d3
  943.     move.w    pic_hgt(a2),d3
  944.     muls    d3,d2
  945.     
  946.     move.l    d2,d4
  947.     add.l    d2,d2
  948.  
  949.     move.w    pic_dpt(a2),d3
  950.     muls    d3,d4            ;hele picture size
  951.     muls    d7,d4            ;frame*size d7 
  952.  
  953.     add.l    d4,d4
  954.  
  955.     add.l    d4,d0
  956.  
  957.     move.l    #vew_wid,d5        ;max x view
  958.     move.l    hogscr,d4        ;max y view
  959.     move.w    pic_vew(a2),d1        ;viewmode add
  960.     btst    #2,d1
  961.     beq.s    grappln.nolace
  962.     add.l    d4,d4            ;max y view
  963. grappln.nolace
  964.     btst    #15,d1            ;hires ?
  965.     beq.s    grappln.nohi
  966.     move.l    #vew_wid*2,d5        ;max x view
  967.     bra.s    grappln.noshi
  968. grappln.nohi
  969.     btst    #6,d1            ;super hires ?
  970.     beq.s    grappln.noshi
  971.     move.l    #vew_wid*4,d5        ;max x view
  972. grappln.noshi
  973.  
  974.     moveq.l    #0,d3            ;scherm centreren
  975.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  976.     cmp.w    d5,d3            ;breder dan scherm ?
  977.     ble.s    grappln.qa
  978.     sub.w    d5,d3            ;-scherm breedte
  979.     lsr.w    #2,d3            ;/4
  980.  
  981.     add.l    d3,d3
  982.  
  983.     add.l    d3,d0
  984. grappln.qa
  985.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  986.     cmp.w    d4,d3            ;hoger dan scherm ?
  987.     ble.s    grappln.qb
  988.     sub.w    d4,d3            ;-scherm breedte
  989.     lsr.w    #1,d3            ;/2
  990.     moveq.l    #0,d5
  991.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  992.     muls    pic_dpt(a2),d5
  993.     muls    d5,d3
  994.     add.l    d3,d0
  995. grappln.qb
  996.     moveq.l    #0,d2
  997.     move.w    pic_wid(a2),d2
  998.  
  999.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  1000.     btst    #2,d5
  1001.     beq.s    grappln.nolac7b
  1002.  
  1003.     move.w    $04(a6),d5        ;even/oneven ?
  1004.     btst    #15,d5
  1005.     beq.s    grappln.nolac7b
  1006.     
  1007.     moveq.l    #0,d3
  1008.     move.w    pic_wid(a2),d3
  1009.     muls    pic_dpt(a2),d3
  1010.     add.l    d3,d0
  1011. grappln.nolac7b
  1012.  
  1013.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  1014.     tst.w    d1            ;0 planes ?
  1015.     beq    grappln.end
  1016.     sub.w    #1,d1
  1017. grappln.a
  1018.     move.w    d0,3*2(a0)
  1019.     swap    d0
  1020.     move.w    d0,1*2(a0)
  1021.     swap    d0
  1022.     add.l    d6,a0            ;d6=copper step !
  1023.     add.l    d2,d0
  1024.     dbra    d1,grappln.a
  1025.  
  1026.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1027.     bne    grappln.noham8
  1028.     btst    #3,pic_vew(a2)        ;ham ?
  1029.     beq    grappln.noham8
  1030.  
  1031.     move.w    -14(a0),d0        ;get 6
  1032.     move.w    -10(a0),d1
  1033.     move.w    -6(a0),d2        ;get 7
  1034.     move.w    -2(a0),d3
  1035.     move.w    -18(a0),-2(a0)        ;5>7
  1036.     move.w    -22(a0),-6(a0)        ;5>7
  1037.     move.w    -26(a0),-10(a0)        ;4>6
  1038.     move.w    -30(a0),-14(a0)        ;4>6
  1039.     move.w    -34(a0),-18(a0)        ;3>5
  1040.     move.w    -38(a0),-22(a0)        ;3>5
  1041.     move.w    -42(a0),-26(a0)        ;2>4
  1042.     move.w    -46(a0),-30(a0)        ;2>4
  1043.     move.w    -50(a0),-34(a0)        ;1>3
  1044.     move.w    -54(a0),-38(a0)        ;1>3
  1045.     move.w    -58(a0),-42(a0)        ;0>2
  1046.     move.w    -62(a0),-46(a0)        ;0>2
  1047.     move.w    d0,-62(a0)        ;6>0
  1048.     move.w    d1,-58(a0)        ;6>0
  1049.     move.w    d2,-54(a0)        ;7>1
  1050.     move.w    d3,-50(a0)        ;7>1
  1051. grappln.noham8
  1052.  
  1053. grappln.end
  1054.     movem.l    (sp)+,d0-d7/a0-a6
  1055.     rts
  1056.  
  1057.     ;sets palettes to palette-buffer
  1058.     
  1059. grac
  1060.     movem.l    d0-d7/a0-a6,-(sp)
  1061.  
  1062.     lea    curpal1,a3        ;palette 1
  1063.     move.l    #palette,a1
  1064.     bsr.s    gracfrm
  1065.  
  1066.     lea    curpal2,a3        ;palette 2 (dpl)
  1067.     move.l    #16*4+palette,a1
  1068.     bsr.s    gracfrm
  1069.     
  1070.     bsr    palctr            ;palette-buffer to copper
  1071. grac.end
  1072.     movem.l    (sp)+,d0-d7/a0-a6
  1073.     rts
  1074.         
  1075.     ;moves palette from picture to palette-buffer
  1076.  
  1077. gracfrm
  1078.     movem.l    d0-d7/a0-a6,-(sp)
  1079.     tst.l    (a3)            ;palette aanwezig ?
  1080.     beq.s    gracfrm.end
  1081.  
  1082.     move.l    (a3),a2            ;current palette
  1083.     
  1084.     cmp.l    #'PALE',(a2)        ;palette ?
  1085.     bne.s    gracfrm.pict
  1086.     lea    6(a2),a0        ;palette
  1087.     move.w    4(a2),d0        ;aantal kleuren
  1088.     bra.s    gracfrm.col
  1089. gracfrm.pict
  1090.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1091.     bne.s    gracfrm.noanim
  1092.  
  1093.     moveq.l    #0,d1
  1094.     move.w    pic_ani(a2),d1
  1095.     bclr    #7,d1            ;behandelbit weghalen
  1096.  
  1097.     moveq.l    #0,d3
  1098.     move.w    pic_wid(a2),d3
  1099.     lsr.w    #1,d3            ;/2
  1100.     muls    pic_hgt(a2),d3
  1101.     muls    pic_dpt(a2),d3
  1102.  
  1103.     add.l    d3,d3
  1104.  
  1105.     add.l    #pic_raw,d3
  1106.     move.l    d3,d5
  1107.  
  1108.     btst    #0,d1
  1109.     bne.s    gracfrm.buf2
  1110.     moveq.l    #0,d5
  1111. gracfrm.buf2
  1112.     add.l    d5,a2
  1113. gracfrm.noanim
  1114.     lea    pic_pal(a2),a0        ;palette
  1115.     move.w    pic_palnum(a2),d0
  1116.  
  1117.     tst.w    d0            ;0 planes ?
  1118.     beq.s    gracfrm.end
  1119. gracfrm.col
  1120. gracfrm.fa
  1121.     move.l    (a0)+,(a1)+
  1122.     dbra    d0,gracfrm.fa
  1123. gracfrm.end
  1124.     movem.l    (sp)+,d0-d7/a0-a6
  1125.     rts
  1126.     
  1127.     ;handles colorcycling in the palette-buffer
  1128.  
  1129. palcycctr
  1130.     movem.l    d0-d7/a0-a6,-(sp)
  1131.  
  1132.     move.l    curpic1,a2        ;current raw
  1133.     cmp.l    #0,a2
  1134.     beq.s    palcycctr.qb
  1135.     lea    cycdel1,a3        ;cycle delays
  1136.     move.l    #paltab,a4
  1137.     bsr    palcyc
  1138. palcycctr.qb
  1139.     move.l    curpic2,a2        ;current raw
  1140.     cmp.l    #0,a2
  1141.     beq.s    palcycctr.c
  1142.     lea    cycdel2,a3        ;cycle delays
  1143.     move.l    #16*2+paltab,a4
  1144.     bsr    palcyc
  1145. palcycctr.c
  1146.     movem.l    (sp)+,d0-d7/a0-a6
  1147.     rts
  1148.     
  1149.     ;copies palette-buffer to copper
  1150.  
  1151. palctr
  1152.     movem.l    d0-d7/a0-a6,-(sp)
  1153.  
  1154.     lea    gracprcol,a1        ;AGA
  1155.     move.l    #palette,a0
  1156.     move.l    #paltab,a2
  1157.     move.w    #8-1,d6
  1158. palctr.e
  1159.     move.w    #32-1,d7
  1160. palctr.d
  1161.     move.w    (a2)+,d0            ;get cycle-position
  1162.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1163.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1164.     add.l    #4,a1
  1165.     dbra    d7,palctr.d
  1166.     add.l    #((32+2)*4),a1
  1167.     dbra    d6,palctr.e
  1168. palctr.end
  1169.     movem.l    (sp)+,d0-d7/a0-a6
  1170.     rts
  1171.  
  1172.     ;reset palette tabel, for proper color cycling
  1173.  
  1174. paltabres
  1175.     movem.l    d0-d7/a0-a6,-(sp)
  1176.     lea    paltab,a0
  1177.     clr.l    d0
  1178.     move.w    #256-1,d1
  1179. paltabres.a
  1180.     move.w    d0,(a0)+
  1181.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1182.     dbra    d1,paltabres.a
  1183. paltabres.end
  1184.     movem.l    (sp)+,d0-d7/a0-a6
  1185.     rts
  1186.  
  1187.     ;colorcyclinghandling of a palette
  1188.  
  1189. palcyc
  1190.     movem.l    d0-d7/a0-a6,-(sp)
  1191.     move.w    #4-1,d7            ;4 cycles
  1192. palcyc.d
  1193.     tst.w    (a3)+            ;delay klaar ?
  1194.     bne.s    palcyc.c
  1195.     
  1196.     moveq.l    #0,d1
  1197.     move.b    pic_cycstr(a2),d1    ;start color
  1198.     lsl.b    #1,d1        ;*2
  1199.  
  1200.     moveq.l    #0,d2
  1201.     move.b    pic_cycend(a2),d2    ;end color
  1202.     lsl.b    #1,d2        ;*2
  1203.  
  1204.     moveq.l    #0,d3
  1205.     move.b    pic_cycadd(a2),d3    ;richting
  1206.  
  1207.     move.l    a4,a0            ;palette pointer
  1208.     move.l    a0,a1
  1209.     add.l    d1,a0            ;startcolor
  1210.     add.l    d2,a1            ;endcolor
  1211.     
  1212.     cmp.b    #1,d3            ;omhoog
  1213.     beq.s    palcyc.up    
  1214.     cmp.b    #3,d3            ;omlaag
  1215.     beq.s    palcyc.down
  1216.     bra.s    palcyc.i
  1217.  
  1218. palcyc.up                ;kleuren copieren
  1219.     move.w    (a1),d4            ;laatst color bewaren
  1220. palcyc.f                ;kleuren copieren
  1221.     cmp.l    a0,a1
  1222.     beq.s    palcyc.fa
  1223.     move.w    -(a1),2(a1)
  1224.     bra.s    palcyc.f
  1225. palcyc.fa
  1226.     move.w    d4,(a1)
  1227.     bra.s    palcyc.g    
  1228.     
  1229. palcyc.down
  1230.     move.w    (a0),d4            ;laatst color bewaren
  1231. palcyc.h                ;kleuren copieren
  1232.     cmp.l    a0,a1
  1233.     beq.s    palcyc.ha
  1234.     move.w    2(a0),(a0)+
  1235.     bra.s    palcyc.h
  1236. palcyc.ha
  1237.     move.w    d4,(a1)
  1238.  
  1239. palcyc.g
  1240.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1241.     bra.s    palcyc.i
  1242. palcyc.c
  1243.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1244. palcyc.i
  1245.     add.l    #4,a2            ;next cycle info
  1246.     dbra    d7,palcyc.d
  1247.  
  1248. palcyc.qb
  1249.     movem.l    (sp)+,d0-d7/a0-a6
  1250.     rts
  1251.  
  1252.  
  1253.  
  1254. ;    SECTION    variabelen,DATA_c
  1255.  
  1256.     cnop    0,2
  1257. curtsk        dc.l    0
  1258. tskpri        dc.l    0
  1259. duplok        dc.l    0
  1260. inttel        dc.l    0
  1261. intdel        dc.l    0
  1262.  
  1263. form        dc.l    0
  1264. ifffil        dc.l    0
  1265. intvbold    dc.l    0
  1266. inttbeold    dc.l    0
  1267. patpos        dc.l    0
  1268. gfxlib        dc.l    0
  1269. doslib        dc.l    0
  1270. wbview      dc.l    0
  1271. mt_data        dc.l    0
  1272. memvid        dc.l    0
  1273. oldcprlist    dc.l    0
  1274. hogscr        dc.l    vew_hgt
  1275.  
  1276. inspos        dc.l    -1
  1277. anispd1        dc.w    1    ;nooit op 0 !
  1278. anispd2        dc.w    1
  1279.  
  1280.         cnop    0,2
  1281. varclr.s            ;start wissen
  1282. oldrot        dc.l    0
  1283. curpic        dc.l    0
  1284. curfrm        dc.l    0
  1285. cycdel1        ds.w    4
  1286. cycdel2        ds.w    4
  1287.  
  1288. rotinf1        dc.w    0
  1289. rotinf2        dc.w    0
  1290.  
  1291. effspd        dc.w    0
  1292. efflop        dc.b    0
  1293. anilop1        dc.b    0
  1294. anilop2        dc.b    0
  1295. anipal1        dc.b    0
  1296. anipal2        dc.b    0
  1297. rotdpl        dc.b    1
  1298. rottrg        dc.b    0
  1299. dplctr        dc.b    0
  1300.         cnop    0,2
  1301.  
  1302. insdat        ds.l    4
  1303. inspri        dc.l    0
  1304. instel        dc.w    0
  1305.  
  1306. cureff        dc.l    0
  1307. efftel        dc.w    0
  1308.  
  1309. curpal1        dc.l    0
  1310. curpal2        dc.l    0
  1311. currot1        dc.l    0
  1312. currot2        dc.l    0
  1313. curpic1        dc.l    0
  1314. curpic2        dc.l    0
  1315. anitel1        dc.w    0
  1316. anitel2        dc.w    0
  1317. curfrm1        dc.l    0
  1318. curfrm2        dc.l    0
  1319. oldfrm1        dc.l    0
  1320. oldfrm2        dc.l    0
  1321.  
  1322. varclr.e
  1323.         dc.l    0            ;wisruimte
  1324.     
  1325. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1326.     
  1327. ntscmode    dc.b    0
  1328. end        dc.b    0
  1329.  
  1330. pronam    dc.b    'VideoTracker',0
  1331.     cnop    0,2
  1332. dosnam    dc.b    'dos.library',0
  1333.     cnop    0,4
  1334. gfxnam    dc.b    'graphics.library',0
  1335.     cnop    0,4
  1336.     
  1337.     cnop    0,4
  1338. gra.s            ;copperlist edit buffer
  1339. gracprscr
  1340.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1341. gracprbpl
  1342.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1343.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1344. gracprpln
  1345.     dc.w    $e0,$0000,$e2,$0000    ;1
  1346.     dc.w    $e4,$0000,$e6,$0000    ;2
  1347.     dc.w    $e8,$0000,$ea,$0000    ;3
  1348.     dc.w    $ec,$0000,$ee,$0000    ;4
  1349.     dc.w    $f0,$0000,$f2,$0000    ;5
  1350.     dc.w    $f4,$0000,$f6,$0000    ;6
  1351.     dc.w    $f8,$0000,$fa,$0000    ;7
  1352.     dc.w    $fc,$0000,$fe,$0000    ;8
  1353. gracprcol
  1354.     dc.w    $106,$0000
  1355.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1356.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1357.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1358.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1359.     dc.w    $106,$0200
  1360.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1361.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1362.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1363.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1364.  
  1365.     dc.w    $106,$2000
  1366.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1367.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1368.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1369.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1370.     dc.w    $106,$2200
  1371.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1372.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1373.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1374.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1375.  
  1376.     dc.w    $106,$4000
  1377.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1378.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1379.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1380.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1381.     dc.w    $106,$4200
  1382.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1383.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1384.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1385.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1386.  
  1387.     dc.w    $106,$6000
  1388.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1389.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1390.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1391.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1392.     dc.w    $106,$6200
  1393.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1394.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1395.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1396.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1397.  
  1398.     dc.w    $106,$8000
  1399.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1400.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1401.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1402.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1403.     dc.w    $106,$8200
  1404.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1405.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1406.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1407.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1408.  
  1409.     dc.w    $106,$a000
  1410.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1411.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1412.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1413.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1414.     dc.w    $106,$a200
  1415.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1416.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1417.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1418.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1419.  
  1420.     dc.w    $106,$c000
  1421.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1422.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1423.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1424.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1425.     dc.w    $106,$c200
  1426.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1427.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1428.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1429.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1430.  
  1431.     dc.w    $106,$e000
  1432.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1433.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1434.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1435.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1436.     dc.w    $106,$e200
  1437.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1438.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1439.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1440.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1441.  
  1442.     dc.w    $106,$1000
  1443.  
  1444. cprjmp
  1445.     dc.w    $080,0,$082,0
  1446. gra.e
  1447. gra.ql    equ    gra.e-gra.s        ;block lengte
  1448.  
  1449. cpr                    ;real copperlist
  1450.     dc.w    $0001,$fffe
  1451.     dc.w    $09c,$8001        ;tbeint
  1452. cprspr
  1453.     dc.w    $120,$0000,$122,$0000
  1454.     dc.w    $124,$0000,$126,$0000
  1455.     dc.w    $128,$0000,$12a,$0000
  1456.     dc.w    $12c,$0000,$12e,$0000
  1457.     dc.w    $130,$0000,$132,$0000
  1458.     dc.w    $134,$0000,$136,$0000
  1459.     dc.w    $138,$0000,$13a,$0000
  1460.     dc.w    $13c,$0000,$13e,$0000
  1461.  
  1462. cprbuf
  1463.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1464.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1465.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1466.  
  1467.     dc.w    $e0,$0000,$e2,$0000    ;0
  1468.     dc.w    $e4,$0000,$e6,$0000    ;1
  1469.     dc.w    $e8,$0000,$ea,$0000    ;2
  1470.     dc.w    $ec,$0000,$ee,$0000    ;3
  1471.     dc.w    $f0,$0000,$f2,$0000    ;4
  1472.     dc.w    $f4,$0000,$f6,$0000    ;5
  1473.     dc.w    $f8,$0000,$fa,$0000    ;6
  1474.     dc.w    $fc,$0000,$fe,$0000    ;7
  1475.  
  1476.     dc.w    $106,$0000
  1477.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1478.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1479.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1480.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1481.     dc.w    $106,$0200
  1482.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1483.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1484.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1485.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1486.  
  1487.     dc.w    $106,$2000
  1488.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1489.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1490.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1491.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1492.     dc.w    $106,$2200
  1493.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1494.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1495.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1496.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1497.  
  1498.     dc.w    $106,$4000
  1499.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1500.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1501.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1502.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1503.     dc.w    $106,$4200
  1504.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1505.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1506.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1507.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1508.  
  1509.     dc.w    $106,$6000
  1510.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1511.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1512.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1513.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1514.     dc.w    $106,$6200
  1515.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1516.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1517.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1518.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1519.  
  1520.     dc.w    $106,$8000
  1521.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1522.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1523.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1524.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1525.     dc.w    $106,$8200
  1526.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1527.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1528.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1529.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1530.  
  1531.     dc.w    $106,$a000
  1532.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1533.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1534.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1535.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1536.     dc.w    $106,$a200
  1537.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1538.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1539.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1540.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1541.  
  1542.     dc.w    $106,$c000
  1543.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1544.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1545.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1546.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1547.     dc.w    $106,$c200
  1548.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1549.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1550.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1551.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1552.  
  1553.     dc.w    $106,$e000
  1554.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1555.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1556.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1557.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1558.     dc.w    $106,$e200
  1559.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1560.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1561.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1562.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1563.  
  1564.     dc.w    $106,$1000
  1565.  
  1566.     dc.w    $080,0,$082,0
  1567. cprbuf.e
  1568.  
  1569.     dc.w    $088,$0000        ;copjmp2
  1570.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1571. cprbck
  1572. sprdat
  1573.     dc.w    $ffff,$fffe
  1574.  
  1575. palette        ds.l    256        ;palette 24-bits, far out !
  1576. paltab        ds.w    256        ;palette cycle-tabel
  1577.  
  1578.     cnop    0,2
  1579. var    ds.b    $300    ;variabelen voor routines
  1580.  
  1581.     
  1582.         endc
  1583.  
  1584. ; this is the routine-source
  1585. ;**********************************************************************
  1586.         
  1587.     
  1588. ;    a0=variabelen tabel
  1589. ;    d0=routinfo
  1590.  
  1591.     SECTION    10,CODE
  1592.     cnop    0,8
  1593. rot
  1594. rotp
  1595.     ifd    ocs
  1596.  dc.l    'ROTO'
  1597.     endc
  1598.     ifnd    ocs
  1599.  dc.l    'ROTA'
  1600.     endc
  1601.  movem.l    d1-d7/a1-a6,-(sp)
  1602.  lea    rot,a5
  1603.     ifd    rout
  1604.     move.l    #rotc,a2
  1605.     endc
  1606.     move.l    a2,rotchp-rot(a5)
  1607.  
  1608.  lea    rot,a2
  1609.  
  1610. ; clr.l    d1
  1611. ; move.b    d0,d1
  1612. ; divs    #3,d1
  1613. ; move.b    d1,rotway-rot(a2)
  1614. ; and.l    #$ffff,d1
  1615. ; muls    #3,d1
  1616. ; sub.b    d1,d0
  1617.  move.b    d0,rotdirection-rot(a2)
  1618.  
  1619. beg:                    ; As usual...
  1620.  bsr    dostars
  1621.  bsr    dorotation
  1622.  
  1623.     move.l    rotchp-rot(a2),a0
  1624.  add.l    #rotpic1-rotc,a0
  1625.  movem.l    (sp)+,d1-d7/a1-a6
  1626.  rts
  1627.  
  1628. dorotation:
  1629.  move.w    #2,d1                ;snelheid
  1630.  
  1631. dorotation.a
  1632.  cmp.b    #0,rotdirection-rot(a2)        ;no rotation ?
  1633.  beq    norot
  1634.  
  1635.  cmp.b    #1,rotdirection-rot(a2)        ;left rotation ?
  1636.  beq    left
  1637.  
  1638.  cmp.b    #2,rotdirection-rot(a2)        ;right rotation ?
  1639.  beq    right
  1640.  rts 
  1641.  
  1642. left
  1643.  lea    dire,a0                ;right
  1644.  moveq    #99,d6
  1645. slp:
  1646.  move.w    (a0),d0
  1647.  add.w    d1,d0
  1648.  cmpi.w    #720,d0
  1649.  blt.s    nomore
  1650.  sub.w    #720,d0
  1651. nomore:
  1652.  move.w    d0,(a0)+
  1653.  dbf    d6,slp
  1654.  bra.s    norot
  1655.  
  1656. right
  1657.  lea    dire,a0
  1658.  moveq    #99,d6
  1659. slp2:
  1660.  move.w    (a0),d0
  1661.  sub.w    d1,d0
  1662.  cmpi.w    #0,d0
  1663.  bge.s    nomore2
  1664.  addi.w    #720,d0
  1665. nomore2:
  1666.  move.w    d0,(a0)+
  1667.  dbf    d6,slp2
  1668.  
  1669. norot:
  1670.  rts
  1671.  
  1672. dostars:
  1673.  moveq    #99,d2
  1674.     move.l    rotchp-rot(a2),a0
  1675.  add.l    #rotpln1-rotc,a0            ; helft Bpl 2
  1676.  ifd ocs
  1677.  add.l    #(290+128)*64+12,a0        ; helft Bpl 2
  1678.  endc
  1679.  ifnd ocs
  1680.  add.l    #(290+128)*64+16,a0        ; helft Bpl 2
  1681.  endc
  1682.  lea    sine,a6                ; Sine table
  1683.  lea    posx,a5                ; X pos table
  1684.  lea    posy,a4                ; Y pos table
  1685.  lea    dire,a3                ; Direction table
  1686.  
  1687. thelot:
  1688.  moveq.l    #0,d1
  1689.  moveq.l    #0,d3
  1690.  
  1691.  move.w    (a5),d0                ; Xpos * 100
  1692.  move.w    (a4),d1                ; Ypos * 100
  1693.  move.w    (a3)+,d7            ; Direction (angle * 2)
  1694.  move.w    d7,d6
  1695.  add.w    #180,d6                ; Y direction
  1696.  cmpi.w    #720,d6
  1697.  blt.s    notnow
  1698.  subi.w    #720,d6                ; cos(360)=cos(0)
  1699. notnow:
  1700.  
  1701.  movem.l    d0/d1/d3/a1,-(a7)
  1702.  lsr.w    #7,d0                ;/128
  1703.  lsr.w    #1,d1                ;/2
  1704.  and.w    #$ffc0,d1            ; YPos/128 * 64 = Row offset
  1705.                     ; afronden op 64 
  1706.  move.w    d1,d3
  1707.  add.l    d1,d1
  1708.  add.l    d3,d1                ; d1*3
  1709.  
  1710.  move.w    d0,d3
  1711.  lsr.w    #3,d3                ; Byte offset
  1712.  not.b    d0                ; DELETE OLD STAR
  1713.  andi.b    #7,d0
  1714.  add.w    d3,d1
  1715.  
  1716.     ifd    ocs
  1717.  sub.l    #(290+128)*64,d1
  1718.     endc
  1719.     ifnd    ocs
  1720.  sub.l    #(290+128)*64,d1
  1721.     endc
  1722.  bclr    d0,0-2(a0,d1)
  1723.  bclr    d0,64-2(a0,d1)
  1724.  bclr    d0,128-2(a0,d1)
  1725.  
  1726.  movem.l    (a7)+,d0/d1/d3/a1
  1727.  
  1728.  move.w    (a6,d7.w),d5            ; Get sine value
  1729.  move.w    (a6,d6.w),d4            ; Get cosine value
  1730.  move.w    nummoves-dire-2(a3),d7        ; Distance
  1731.  muls    d7,d4
  1732.  muls    d7,d5
  1733.  
  1734.  asr.w    #5,d4
  1735.  asr.w    #5,d5
  1736.  
  1737.  add.w    d5,d0                ; Xpos
  1738.  add.w    d4,d1                ; Ypos
  1739.  move.w    d0,(a5)+            ; Xpos save
  1740.  move.w    d1,(a4)+            ; YPos save
  1741.  lsr.l    #7,d0                ; Xpos = Xpos/128 = Xpos
  1742.  lsr.l    #7,d1                ; Ypos = Ypos/128 = Ypos
  1743.  
  1744.  cmp.w    #352-2,d0
  1745.  bge.s    res
  1746.  cmp.w    #290-2,d1
  1747.  bge.s    res
  1748.  cmp.w    #2,d0
  1749.  ble.s    res
  1750.  cmp.w    #2,d1
  1751.  bgt.s    nores
  1752.  
  1753. res
  1754.  move.l    #176,d0
  1755.  move.w    #22352,-2(a5)            ; Save the pos'n
  1756.  move.l    #145,d1
  1757.  move.w    #16290,-2(a4)
  1758.  clr.w    nummoves-dire-2(a3)        ; Clear nummoves
  1759.  moveq    #0,d7
  1760. nores:
  1761.  add.w    #1,nummoves-dire-2(a3)
  1762.  
  1763.  lsl.w    #6,d1                ; * 64
  1764.  move.w    d1,d3
  1765.  add.l    d1,d1
  1766.  add.l    d3,d1                ; * 3
  1767.  
  1768.  move.w    d0,d3
  1769.  lsr.w    #3,d3                ; Divide by 8 = byte offset
  1770.  add.w    d3,d1
  1771.  not.b    d0
  1772.  andi.b    #7,d0
  1773.  
  1774.     ifd    ocs
  1775.  sub.l    #(290+128)*64,d1        ;centre point
  1776.     endc
  1777.     ifnd    ocs
  1778.  sub.l    #(290+128)*64,d1        ;centre point
  1779.     endc
  1780.     
  1781.  lsr.w    #4,d7                ;/16
  1782.  beq.s    nopl3
  1783.  addq.b    #1,d7                ; Color is dependent upon dist
  1784.  cmpi.b    #7,d7
  1785.  ble.s    nofix
  1786.  moveq    #7,d7
  1787. nofix:
  1788.  lsr.b    #1,d7
  1789.  bcc.s    nopl1
  1790. setp1:
  1791.  bset    d0,0-2(a0,d1)            ; Set point
  1792. nopl1:
  1793.  lsr.b    #1,d7
  1794.  bcc.s    nopl2
  1795. setp2:
  1796.  bset    d0,64-2(a0,d1)
  1797. nopl2:
  1798.  lsr.b    #1,d7
  1799.  bcc.s    nopl3
  1800.  bset    d0,128-2(a0,d1)
  1801. nopl3:
  1802.  
  1803. NoDraw:
  1804.  dbf    d2,thelot
  1805.  rts
  1806.  
  1807. rotchp        dc.l    0
  1808. rotdirection    dc.b 0
  1809. rotway        dc.b 0
  1810.  
  1811.  cnop    0,2
  1812. dire:
  1813.  incbin    'w:bin/dire.bin'
  1814. ; dc.w 468,624,524,574,52,352,326,76,684,506    ;110 
  1815. ; dc.w 382,698,230,688,672,384,406,482,504,532
  1816. ; dc.w 480,326,240,112,530,390,306,38,552,368
  1817. ; dc.w 406,532,476,166,334,92,348,38,260,410
  1818. ; dc.w 712,208,472,676,272,640,574,680,232,296
  1819. ; dc.w 304,526,156,158,548,490,514,672,188,372
  1820. ; dc.w 340,98,348,438,126,236,176,410,584,88
  1821. ; dc.w 6,52,120,512,378,670,440,398,516,312
  1822. ; dc.w 72,246,600,656,326,138,590,412,610,82
  1823. ; dc.w 706,418,442,500,612,274,164,48,254,200
  1824. dire.e
  1825.  
  1826.  cnop    0,2
  1827. nummoves:
  1828.  incbin    'w:bin/nummoves.bin'
  1829. ; ds.w 100
  1830. nummoves.e
  1831.  
  1832.  cnop    0,2
  1833. posx:
  1834.  incbin    'w:bin/posx.bin'
  1835. ; dc.w 29440,39296,33024,36096,3328,22144,20480,4736,43008,31872
  1836. ; dc.w 24064,43904,14464,43264,42240,24192,25472,30336,31744,33536
  1837. ; dc.w 30208,20480,15104,7040,33280,24576,19200,2432,34688,23168
  1838. ; dc.w 25472,33536,29952,10368,20992,5760,21888,2432,16384,25856
  1839. ; dc.w 44800,13056,29696,42496,17152,40320,36096,42880,14592,18688
  1840. ; dc.w 19200,33152,9856,9856,34560,30848,32384,42240,11776,23296
  1841. ; dc.w 21376,6144,21888,27520,7936,14848,11008,25728,36736,5632
  1842. ; dc.w 384,3200,7552,32256,23680,42240,27648,25088,32512,19584
  1843. ; dc.w 4608,15488,37760,41216,20480,8704,37120,25984,38400,5120
  1844. ; dc.w 44416,26240,27776,31488,38528,17280,10240,2944,15872,12544
  1845. posx.e
  1846.  
  1847.  cnop    0,2
  1848. posy:
  1849.  incbin    'w:bin/posy.bin'
  1850. ; dc.w 15616,21376,30464,11904,6784,14208,29312,25472,9344,15872
  1851. ; dc.w 5376,32256,28160,13184,23680,19328,14592,23296,27648,11392
  1852. ; dc.w 2176,13440,10880,13056,20736,26496,1920,22528,19840,20224
  1853. ; dc.w 23424,22912,28032,8576,27648,12672,27264,15232,2816,12544
  1854. ; dc.w 30848,2432,22784,15232,6144,4736,11136,7680,1792,8576
  1855. ; dc.w 2048,2944,22016,4096,19328,13568,6016,11776,27392,1920
  1856. ; dc.w 12672,20480,21504,32512,20864,29952,28544,10368,32384,4992
  1857. ; dc.w 17920,13696,18688,0,15744,14720,7808,31360,32256,1024
  1858. ; dc.w 14976,22400,29824,6144,14720,18688,29184,18432,19328,18816
  1859. ; dc.w 28672,28928,1024,9344,29184,21120,19712,8960,1664,1920
  1860. posy.e
  1861.  
  1862.  cnop    0,2
  1863. sine:
  1864.  dc.w 0, 4, 8, 12
  1865.  dc.w 16, 22, 26, 30, 34, 40, 44, 48, 52, 56, 60, 66, 70
  1866.  dc.w 74, 78, 82, 86, 90, 94, 100, 104, 108, 112, 116, 120, 124, 128
  1867.  dc.w 130, 134, 138, 142, 146, 150, 154, 156, 160, 164, 166, 170 
  1868.  dc.w 174, 176, 180, 184, 186, 190, 192, 196, 198, 200, 204, 206
  1869.  dc.w 208, 212, 214, 216, 218, 220, 222, 226, 228, 230, 232, 232
  1870.  dc.w 234, 236, 238, 240, 242, 242, 244, 246, 246, 248, 248, 250, 250
  1871.  dc.w 252, 252, 252, 254, 254, 254, 254, 254, 254, 254, 256, 254
  1872.  dc.w 254, 254, 254, 254, 254, 254, 252, 252, 252, 250, 250, 248, 248
  1873.  dc.w 246, 246, 244, 242, 242, 240, 238, 236, 234, 232, 232, 230, 228
  1874.  dc.w 226,222,220,218,216,214,212,208,206,204,200,198,196
  1875.  dc.w 192,190,186,184,180,176,174,170,166,164,160,156,154,150
  1876.  dc.w 146, 142, 138, 134, 130, 126, 124, 120, 116, 112, 108, 104
  1877.  dc.w 100, 94, 90, 86, 82, 78, 74, 70, 66, 60, 56, 52, 48, 44, 40
  1878.  dc.w 34, 30, 26, 22, 16, 12, 8, 4,-2,-6,-10,-14,-18,-24,-28,-32,-36
  1879.  dc.w -42,-46,-50,-54,-58,-62,-68,-72,-76,-80,-84,-88,-92,-96,-102
  1880.  dc.w -106,-110,-114
  1881.  dc.w -118,-122,-126,-130,-132,-136,-140,-144,-148,-152,-156,-158,-162
  1882.  dc.w -166,-168,-172,-176,-178,-182,-186,-188,-192,-194,-198,-200,-202
  1883.  dc.w -206,-208,-210,-214,-216,-218,-220,-222,-224,-228,-230,-232,-234
  1884.  dc.w -234,-236,-238,-240,-242,-244,-244,-246,-248,-248,-250,-250,-252
  1885.  dc.w -252,-254,-254,-254,-256,-256,-256,-256,-256,-256,-256,-256,-256
  1886.  dc.w -256,-256,-256,-256,-256,-256,-254,-254,-254,-252,-252,-250,-250
  1887.  dc.w -248,-248,-246,-244,-244,-242,-240,-238,-236,-234,-234,-232,-230
  1888.  dc.w -228,-224,-222,-220,-218,-216,-214,-210,-208,-206,-202,-200,-198
  1889.  dc.w -194,-192,-188,-186,-182,-178,-176,-172,-168,-166,-162,-158,-156
  1890.  dc.w -152,-148,-144,-140,-136,-132,-128,-126,-122,-118,-114,-110,-106
  1891.  dc.w -102,-96,-92,-88,-84,-80,-76,-72,-68,-62,-58,-54,-50,-46,-42,-36
  1892.  dc.w -32,-28,-24,-18,-14,-10,-6
  1893. sine.e
  1894.  
  1895. ;pic_wid    equ    4        ;wide in bytes
  1896. ;pic_hgt    equ    6        ;hoogte
  1897. ;pic_dpt    equ    8        ;number planes
  1898. ;pic_ani    equ    10        ;aantal effes (anim)
  1899. ;pic_vew    equ    12        ;viewmode
  1900. ;pic_cycstr    equ    14        ;cycle start (*4)
  1901. ;pic_cycend    equ    15        ;cycle end (*4)
  1902. ;pic_cycspd    equ    16        ;cycle speed (*4)
  1903. ;pic_cycadd    equ    17        ;cycle add (*4)
  1904. ;pic_palnum    equ    30        ;aantal kleuren
  1905. ;pic_pal    equ    32        ;palette start
  1906. ;pic_palsiz    equ    256*2        ;vaste palette size
  1907. ;pic_raw    equ    pic_pal+pic_palsiz    ;palette start
  1908.  
  1909. rotp.e
  1910.  
  1911.     SECTION    11,CODE_C
  1912.     cnop    0,8
  1913. rotc
  1914.     ifd    ocs
  1915.  dc.l    'ROTO'
  1916.     endc
  1917.     ifnd    ocs
  1918.  dc.l    'ROTA'
  1919.     endc
  1920.     rts
  1921.  
  1922.     cnop    0,8
  1923. rotpic1
  1924.     dc.l    'PICT'
  1925.     dc.w    64,290,3,1,0
  1926.     ifd    ocs
  1927.     ds.b    4*4
  1928.     endc
  1929.     ifnd    ocs
  1930.     ds.b    8*4+16
  1931.     endc
  1932.     dc.w    8-1
  1933.     ifd    ocs
  1934.     dc.w    $000,$111,$333,$555
  1935.     dc.w    $777,$999,$bbb,$ddd
  1936.     ds.w    256-8
  1937.     endc
  1938.     ifnd    ocs
  1939.     dc.w    $000,0,$111,0,$333,0,$555,0
  1940.     dc.w    $777,0,$999,0,$bbb,0,$ddd,0
  1941.     ds.l    256-8
  1942.     endc
  1943. rotpln1
  1944.     ds.b    3*64*290
  1945.  
  1946. rotc.e
  1947. rot.e
  1948.  
  1949. ;**********************************************************************
  1950.  
  1951.